﻿'''
题目描述
有一个简易内存池，内存按照大小粒度分类，每个粒度有若干个可用内存资源，用户会进行一系列内存申请，需要按需分配内存池中的
资源返回申请结果成功失败列表。
分配规则如下：
分配的内存要大于等于内存的申请量，存在满足需求的内存就必须分配，优先分配粒度小的，但内存不能拆分使用；
需要按申请顺序分配，先申请的先分配，有可用内存分配则申请结果为true；
没有可用则返回false。
注意：不考虑内存释放
输入描述
输入为两行字符串
第一行为内存池资源列表，包含内存粒度数据信息，粒度数据间用逗号分割
一个粒度信息内用冒号分割，冒号前为内存粒度大小，冒号后为数量
资源列表不大于1024
每个粒度的数量不大于4096
第二行为申请列表，申请的内存大小间用逗号分割
申请列表不大于100000
如:
64:2,128:1,32:4,1:128
50,36,64,128,127
输出描述
输出为内存池分配结果
如true,true,true,false,false
示例1
输入
64:2,128:1,32:4,1:128
50,36,64,128,127
输出
true,true,true,false,false
说明
内存池资源包含：64K共2个、128K共1个、32K共4个、1K共128个的内存资源；
针对50,36,64,128,127的内存申请序列，分配的内存依次是：64,64,128,NULL,NULL,
第三次申请内存时已经将128分配出去，因此输出结果是：
true,true,true,false,false
解题思路
规则总结：
按需分配内存，不能拆分。
优先分配最小的满足条件的内存块。
内存池中的资源一旦分配出去，就无法再次使用。
若没有可用内存块满足需求，返回 false。
示例解释：
输入：
64:2,128:1,32:4,1:128
50,36,64,128,127
输出：
true,true,true,false,false
解释过程：
内存池初始化：
内存池资源为：
64K 的内存块有 2 个。
128K 的内存块有 1 个。
32K 的内存块有 4 个。
1K 的内存块有 128 个。
申请 50K 内存：
50K 需要一个大于等于 50K 的内存块。
从内存池中寻找，最小满足要求的内存块是 64K，因此分配一个 64K 的内存块，成功，返回 true。
剩余内存池：64:1, 128:1, 32:4, 1:128。
申请 36K 内存：
36K 需要一个大于等于 36K 的内存块。
最小满足要求的内存块是 64K，因此分配一个 64K 的内存块，成功，返回 true。
剩余内存池：64:0, 128:1, 32:4, 1:128。
申请 64K 内存：
64K 需要一个大于等于 64K 的内存块。
内存池中没有剩余的 64K 内存块，唯一满足条件的内存块是 128K，因此分配一个 128K 的内存块，成功，返回 true。
剩余内存池：64:0, 128:0, 32:4, 1:128。
申请 128K 内存：
128K 需要一个大于等于 128K 的内存块。
但是内存池中已经没有 128K 或更大的内存块了，分配失败，返回 false。
申请 127K 内存：
127K 需要一个大于等于 127K 的内存块。
同样，内存池中没有 128K 或更大的内存块，分配失败，返回 false。
最终，输出为 true,true,true,false,false。
'''
#输入描述
#输入为两行字符串
#第一行为内存池资源列表，包含内存粒度数据信息，粒度数据间用逗号分割
#一个粒度信息内用冒号分割，冒号前为内存粒度大小，冒号后为数量
#资源列表不大于1024
#每个粒度的数量不大于4096
#第二行为申请列表，申请的内存大小间用逗号分割
#申请列表不大于100000
#如:
#64:2,128:1,32:4,1:128
#50,36,64,128,127
#输出描述
#输出为内存池分配结果
#如true,true,true,false,false

#读取输入
mem_info = input().split(',')
request_info = list(map(int,(input().split(','))))
mem_detail = []
#遍历内存信息
for mem in mem_info:
    mem_detail.append(list(map(int,mem.split(':'))))
#对内存信息排序
mem_detail.sort(key= lambda x: x[0])

#遍历申请列表，申请内存
result = []
for request in request_info:
    valid = False
    for mem in mem_detail:
        if request <= mem[0] and mem[1] > 0:
            valid = True
            mem[1] -= 1
            break
    result.append('true' if valid else 'false')
#输出结果
print(','.join(result))

